﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int main()
//{
//	FILE* pf = fopen("D:\\C语言\\文件操作\\data.txt", "w");//绝对路径必须是  \\  这个斜杠
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return;
//	}
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("./../文件操作/data.txt", "w");
//	if (pf== NULL)
//	{
//		perror("fopen");
//		return;
//	}
//	return 0;
//}

//int main()
//{
	//FILE* pf = fopen("data.txt", "w");
	//if (pf == NULL)
	//{
	//	perror("fopen");
	//	return;
	//}

	//char ch;
	//for (ch = 'a'; ch < 'z'; ch++)
	//{
	//	fputc(ch, pf);
	//	//if (ch % 5 == 0)
	//	//	printf("\n");
	//}
	//for (ch = 'a'; ch < 'z'; ch++)
	//{
	//	fputc(ch, pf);
	//	if (ch % 5 == 0)
	//		printf("\n");
	//}
	//fclose(pf);

//	FILE* pf2 = fopen("data.txt", "r");
//	if (pf2 == NULL)
//	{
//		perror("fp2");
//		return;
//	}
////
//	int ch2=0;
//	while ((ch2 = fgetc(pf2)) != EOF)
//	{
//		printf("%c ", ch2);
//	}
//
//	fclose(pf2);
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//读文件
//	int ch = 0;
//	while ((ch = fgetc(pf)) != EOF)
//	{
//		printf("%c ", ch);
//	}
//	//int ch = fgetc(pf);
//	//printf("%c ", ch);
//
//	//ch = fgetc(pf);
//	//printf("%c ", ch);
//
//	//ch = fgetc(pf);
//	//printf("%c ", ch);
//
//	//ch = fgetc(pf);
//	//printf("%c ", ch);
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

#include<stdlib.h>


//int main()
//{
//	char str[] = "hello  word  linux ";
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		exit(-1);
//	}
//
//	//fputs(str, stdout);
//	// 
//	//读文件
//	fputs(str, pf);
//
//	char ptr[128] = { 0 };
//	//char* ptr = NULL;
//	fgets(ptr, 100, pf);
//
//	printf(ptr);
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (!pf)
//	{
//		perror("fopen");
//		return;
//	}
//	char ptr[128] = { 0 };
//
//	//while (fgets(ptr, 5, pf) != EOF)
//	//{
//	//	printf(ptr);
//	//	printf("\n");
//	//}
//
//	//fgets(ptr, 6, pf);
//	//printf(ptr);
//
//
//}

//struct S
//{
//	float a;
//	int b;
//	char c;
//
//};

//int main()
//{
	//struct S s = {3.14,10,'a'};

	//FILE* pf = fopen("dete.txt", "w");
	//if (pf == NULL)
	//{
	//	perror("fopen");
	//	return;
	//}
	//fprintf(pf, "%f - %d - %c", s.a, s.b, s.c);

	//fprintf(stdout, "%f - %d - %c\n", s.a, s.b, s.c);

//	struct S s = {0};
//	FILE* pf = fopen("dete.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return;
//	}
//	fscanf(pf, "%f - %d - %c", &s.a, &s.b, &s.c);
//	printf("%f %d %c", s.a, s.b, s.c);
//
//	//fclose(pf);
//
//	return 0;
//}

//二进制写入
//int main()
//{
//	FILE* pf = fopen("haha.txt","wb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return;
//	}
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	fwrite(arr, sizeof(int), sizeof(arr) / sizeof(arr[0]), pf);
//
//
//	fclose(pf);
//	return 0;
//}

//二进制读取
//int main()
//{
//	FILE* pf = fopen("haha.txt", "rb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return;
//	}
//	int arr[10] = { 0 };
//	fread(arr, sizeof(int), sizeof(arr) / sizeof(arr[0]), pf);
//	for (int i = 0; i < 10; i++)
//		printf("%d ", arr[i]);
//
//	fclose(pf);
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data1.txt", "w");
//	if (!pf)
//	{
//		perror("fopen");
//		return;
//	}
//	fputs("abcdefghijklmn", pf);
//	fclose(pf);
//
//	FILE* pf1 = fopen("data1.txt", "r");
//	int ch = 0;
//	ch = fgetc(pf);
//	printf("%c ", ch);
//	
//	ch = fgetc(pf);
//	printf("%c ", ch);
//
//	ch = fgetc(pf);
//	printf("%c ", ch);
//
//	fseek(pf, 0, SEEK_SET);
//	ch = fgetc(pf);
//	printf("%c ", ch);
//
//	ch = fgetc(pf);
//	printf("%c ", ch);
//
//	ch = fgetc(pf);
//	printf("%c ", ch);
//	rewind(pf);
//	ch = fgetc(pf);
//	printf("%c ", ch);
//	fseek(pf, -1, SEEK_END);
//	ch = fgetc(pf);
//	printf("%c ", ch);
//
//	ch = fgetc(pf);
//	printf("%c ", ch);
//
//	printf("%d ", ftell(pf));
//	return 0;
//}

//int main()
//{
//	//FILE* pf = fopen("data1.txt", "w");
//	//if (!pf)
//	//{
//	//	perror("fopen");
//	//	return;
//	//}
//	//fputs("abcdefghijklmn", pf);
//	//fclose(pf);
//
//	FILE* pf1 = fopen("data1.txt", "r");
//	char buffer[128] = { 0 };
//	//fgets(buffer, 100, pf1);
//	//printf("%s", buffer);
//
//	//fgets(buffer, 100, pf1);
//	//printf("%s", buffer);
//
//	//fgets(buffer, 100, pf1);
//	//printf("%s", buffer);
//
//	//fgets(buffer, 100, pf1);
//	//printf("%s", buffer);
//
//	while (fgets(buffer, 100, pf1) != NULL)
//		printf("%s", buffer);
//
//	return 0;
//}


/* fseek example */
//#include <stdio.h>
//int main()
//{
//	FILE* pFile;
//	pFile = fopen("example.txt", "wb");
//	fputs("This is an apple.", pFile);
//	fseek(pFile, 9, SEEK_SET);
//	fputs(" sam", pFile);
//	fclose(pFile);
//	return 0;
//}

/* ftell example : getting size of a file */
//#include <stdio.h>
//int main()
//{
//	FILE* pFile;
//	long size;
//	pFile = fopen("myfile.txt", "rb");
//	//int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	//fwrite(arr, sizeof(int), sizeof(arr) / sizeof(arr[0]), pFile);
//	if (pFile == NULL) perror("Error opening file");
//	else
//	{
//		fseek(pFile, 0, SEEK_END);
//		size = ftell(pFile);
//		fclose(pFile);
//		printf("Size of myfile.txt: %ld bytes.\n", size);
//	}
//	return 0;
//}

///* rewind example */
//#include <stdio.h>
//int main()
//{
//	int n;
//	FILE* pFile;
//	char buffer[27];
//	pFile = fopen("myfile.txt", "w+");
//	for (n = 'A'; n <= 'Z'; n++)
//		fputc(n, pFile);
//	rewind(pFile);
//	fread(buffer, 1, 26, pFile);
//	fclose(pFile);
//	buffer[26] = '\0';
//	puts(buffer);
//	return 0;
//}

//int main(void)
//{
//	int c; // 注意：int，非char，要求处理EOF
//	FILE* fp = fopen("data.txt", "r");
//	if (!fp) {
//		perror("File opening failed");
//		return EXIT_FAILURE;
//	}
//	//fgetc 当读取失败的时候或者遇到文件结束的时候，都会返回EOF
//	while ((c = fgetc(fp)) != EOF) // 标准C I/O读取文件循环
//	{
//		putchar(c);
//	}
//	printf("\n");
//	//判断是什么原因结束的
//	if (ferror(fp))
//		puts("I/O error when reading");
//	else if (feof(fp))
//		puts("End of file reached successfully");
//	fclose(fp);
//}

//#include <stdio.h>
//enum { SIZE = 5 };
//int main(void)
//{
//	double a[SIZE] = { 1.,2.,3.,4.,5. };
//	FILE* fp = fopen("test.bin", "wb"); // 必须用二进制模式
//	fwrite(a, sizeof * a, SIZE, fp); // 写 double 的数组
//	fclose(fp);
//	double b[SIZE];
//	fp = fopen("test.bin", "rb");
//	size_t ret_code = fread(b, sizeof * b, SIZE, fp); // 读 double 的数组
//	if (ret_code == SIZE) {
//		puts("Array read successfully, contents: ");
//		for (int n = 0; n < SIZE; ++n) printf("%f ", b[n]);
//		putchar('\n');
//	}
//	else { // error handling
//		if (feof(fp))
//			printf("Error reading test.bin: unexpected end of file\n");
//		else if (ferror(fp)) {
//			perror("Error reading test.bin");
//		}
//	}
//	fclose(fp);
//}

//#include <stdio.h>
//#include <windows.h>
////VS2013 WIN10环境测试
//int main()
//{
//	FILE* pf = fopen("test.txt", "w");
//	fputs("abcdef", pf);//先将代码放在输出缓冲区
//	printf("睡眠10秒-已经写数据了，打开test.txt文件，发现文件没有内容\n");
//	Sleep(10000);
//	printf("刷新缓冲区\n");
//	fflush(pf);//刷新缓冲区时，才将输出缓冲区的数据写到文件（磁盘）
//	//注：fflush 在高版本的VS上不能使用了
//	printf("再睡眠10秒-此时，再次打开test.txt文件，文件有内容了\n");
//	Sleep(10000);
//	fclose(pf);
//	//注：fclose在关闭文件的时候，也会刷新缓冲区
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	printf("%d ", printf("abcdef"));
//	return 0;
//}

//int main()
//{
//	char buffer[128] = { 0 };
//	int a = 100;
//	sprintf(buffer, "hello linux word %d ",a);
//
//	printf(buffer);
//	return 0;
//}


//struct S
//{
//	float f;
//	char c;
//	int n;
//};
//int main()
//{
//	struct S s = { 3.14f, 'c', 100 };
//	char arr[100] = { 0 };
//	sprintf(arr, "%f-%c-%d", s.f, s.c, s.n);
//	printf("%s\n", arr);
//
//	struct S tmp = { 0 };
//	sscanf(arr, "%f-%c-%d", &(tmp.f), &(tmp.c), &(tmp.n));
//	printf("%f\n", tmp.f);
//	printf("%c\n", tmp.c);
//	printf("%d\n", tmp.n);
//
//	return 0;
//}

//#include<Windows.h>
//int main()
//{
//	Sleep(5000);
//	return 0;
//}




